home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / ai / prlg195b.lzh / EXPERT.LZH / PRODSYS / RULES.PRO < prev    next >
Text File  |  1987-06-20  |  3KB  |  92 lines

  1.  /*                      RULES.PRO
  2.  
  3. Note: Use RULEPD for PD PROLOG. This is for type FS and higher. 
  4.  
  5.              by Xavier Salazar. May 30th, 1987
  6.     - interchange files,
  7.     - can introduce new data, depending on the BASE,
  8.     - lists facts (conditions) for a given result,
  9.       (in case of altering data, this must be annotated first),
  10.     - data can be changed,
  11.     - the whole BASE can be kept in a diskette:
  12.       forgetting rules and updating from the actual base to another one,
  13.       forgetting the actual and reconsulting for the new file.
  14. */
  15. menu:-  cls,nl,
  16.     print('\n\t\t\tRULES.PRO'),print('\n\t\t\t---------'),
  17.     title(R),datum(S),
  18.     print('\n\n\t\t\tBASE: ',R,'\t\tDATA: ',S),
  19.     print('\n\n\t\tc. Charge a file,'),
  20.     print('\n\t\tr. Result from facts,'),
  21.         print('\n\t\tf. Facts for a given result,'),
  22.     print('\n\t\td. Data (WARNING!: be sure BASE has data:- routine),'),
  23.     print('\n\t\te. Erase introduced data,'),
  24.     print('\n\t\tl. List objects,'),
  25.     print('\n\t\tt. Title DATA wrong,'),
  26.         print('\n\t\ti. Interchange BASE,'),
  27.     print('\n\t\tk. Keep the BASE with annotated data,'),
  28.     print('\n\t\tx. eXit program,'),
  29.     print('\n\t\ts. Exit system.'),
  30.     print('\n\n\t\t\t\tWhich '),ratom(X),o(X).
  31.  
  32.  o(c):- file_in,menu.
  33.  o(l):- listing(obj),listing(es),listing(datum),print('\n\t\t\t RET'),ratom(_),
  34.     menu.
  35.  o(r):- case(X),retract(case(X)),asserta(case(n)),track.
  36.  o(f):- case(X),retract(case(X)),asserta(case(y)),trail.
  37.  o(e):- retract(datum(_)),fail.
  38.  o(e):- asserta(datum(no)),menu.
  39.  o(t):- datum(no),datum(yes),!,retract(datum(no)),asserta(datum(yes)),menu.
  40.  o(t):- asserta(datum(no)),menu.
  41.  o(d):- data,menu.
  42.  o(i):- title(Z),forget(Z),retract(title(Z)),asserta(title(no_file)), 
  43.         datum(no),!,file_in,menu.
  44.  o(i):- asserta(datum(no)),file_in,menu.
  45.  o(k):- cls,print('Program must be ERASED:forget(rules),'),
  46.     print('\nupdate(<file1>,<file2>),'),
  47.     print('forget(<file1>.'),print('\nwrite:listing. and retract all,'),
  48.     print('\nconsult(rules).'),title(Tit),halt.
  49.  o(x):- halt.
  50.  o(s):- exitsys.
  51.  
  52. title(no_file).
  53. case(n).
  54. datum(no).
  55.  
  56. file_in:- print('\nTitulo: '),ratom(Tit),
  57.     title(S),retract(title(S)),asserta(title(Tit)),
  58.     consultv(Tit).
  59.  
  60. indata:- print('Must be the data subroutine in the base\n'),!,data.
  61. indata:- print('There is not the subroutine data:-  RET'),ratom(_),menu.
  62.  
  63. track:-cls,obj(X),!,print('RESULTS: ',X),print('\n\n\t\tRET'),
  64.     ratom(_),erase,menu.
  65. track:- print('\nNOT DEFINED...'),
  66.     print('\n\n\tRET'),ratom(_),erase,menu.
  67.  
  68. trail:- cls,print('Result designation '),ratom(X),obj(X),listing(asserted),
  69.     listing(denied),print('\n\n\t\tRET'),ratom(_),erase,menu.
  70. trail:- print('\nNOT DEFINED...'),print('\n\n\tRET'),
  71.     ratom(_),erase,menu.
  72.  
  73. affirm(X):- asserted(X),!.
  74. affirm(X):- case(Y),Y='y',!,not(denied(X)),record(X,yes).
  75. affirm(X):- case(Y),Y='n',!,not(denied(X)),question(X).
  76. deny(X):- case(Y),Y='y',denied(X).
  77. deny(X):- case(Y),Y='n',denied(X),!.
  78. deny(X):- case(Y),Y='y',!,not(asserted(X)),record(X,no).
  79. deny(X):- case(Y),Y='n',!,not(asserted(X)),question(X).
  80.      
  81. question(X):- print(X,' ? '), ratom(Answer), record(X,Answer).
  82.  
  83. record(X,yes):- asserta(asserted(X)).
  84. record(X,no):- asserta(denied(X)), fail.
  85.         
  86. erase:- retract(asserted(_)),fail.
  87. erase:- retract(denied(_)),fail.
  88. erase:- menu.
  89.  
  90. ?-menu.
  91.  
  92.